package conservare.boleto;

import java.util.List;

import conservare.modelo.boleto.BoletoEmitido;
import conservare.modelo.boleto.ArquivoRetornoDetalhe;
import conservare.modelo.financeiro.Pagamento;
import conservare.modelo.financeiro.ViaBoleto;
import conservare.modelo.type.TipoBaixaContaPaga;
import conservare.negocio.BoletoEmitidoRN;
import conservare.negocio.BoletoRetornoRN;
import conservare.negocio.ContaAReceberRN;


public class BaixaAutomatica {
	
	List<ArquivoRetornoDetalhe> boletosDetalhesRetorno;
	
	public BaixaAutomatica(){
		
		this.boletosDetalhesRetorno = new BoletoRetornoRN().obterBoletosRetornoDetalhesNaoProcessados();
	}
	

	public void executar(){
		
		for(ArquivoRetornoDetalhe boletoRetornoDetalhe : this.boletosDetalhesRetorno){
			executarBaixaParaEste(boletoRetornoDetalhe);
		}
		
	}
	
	private void executarBaixaParaEste(ArquivoRetornoDetalhe boletoRetornoDetalhe){
		
		BoletoEmitido boleto = new BoletoEmitidoRN().obterBoletoPeloNossoNumero(boletoRetornoDetalhe.getBoletoRetorno().getNumeroDoBanco(), boletoRetornoDetalhe.getNossoNumero());
		
		if(boleto != null){
			
			Pagamento pagamento = new ViaBoleto();
			pagamento.setDataDePagamento(boletoRetornoDetalhe.getDataPagamentoDoTitulo());
			pagamento.setTipoBaixa(TipoBaixaContaPaga.AUTO);
			pagamento.setValorPago(boletoRetornoDetalhe.getValorPago());
			
			ContaAReceberRN contaAReceberRN = new ContaAReceberRN();
			contaAReceberRN.efetuarBaixa(boleto.getContaAReceber(), pagamento);
			
		}
	}
	
}
